Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GHA: add MSYS, mingw-w64, Cygwin jobs #13599

Closed
wants to merge 51 commits into from

Conversation

vszakats
Copy link
Member

@vszakats vszakats commented May 11, 2024

  • re-implement autotools MSYS and Cygwin AppVeyor jobs in GHA.
    Now build with SSL and PSL to improve test coverage.
  • re-implement MSYS2 mingw-w64 gcc 13 AppVeyor job in GHA.
    CMake, mingw-w64, gcc 13, Debug, x64, Schannel, Static, Unicode
  • add new cmake Cygwin job (build-only).
  • enable -j14 parallelism when running tests.
  • delete the 5 migrated jobs from AppVeyor CI.
  • add 2 build-only mingw-w64 builds, gcc Release and clang OpenSSL.
  • also enable brotli, libssh2, nghttp2 for more test coverage.

These jobs offer better performance, more flexibility and
parallelization compared to the AppVeyor ones they replace. It also
offloads AppVeyor, allowing to iterate faster. They also appear more
reliable than e.g. Azure Windows jobs, where runners are prone to fail
1.

Closes #13599


  • Also migrate the mingw-w64 gcc 13 AppVeyor job?
  • Delete the 5 AppVeyor CI jobs if these ones work as expected?
  • Test mingw-w64 in Release CMake configuration.
  • Depends on lib: fix compiler warnings (gcc) #13643.

Footnotes

  1. Exit code 143 returned from process: file name 'C:\Windows\system32\docker.EXE', arguments 'exec -i 6b13a669c6dfe7fb9f59414369872fd64d61c7182f880c3d39c135cb4c115c8f C:\__a\externals\node\bin\node.exe C:\__w\_temp\containerHandlerInvoker.js'.

@vszakats vszakats added the CI Continuous Integration label May 11, 2024
@vszakats vszakats marked this pull request as draft May 11, 2024 15:18
@vszakats

This comment was marked as resolved.

@vszakats vszakats added Windows Windows-specific tests labels May 11, 2024
@vszakats vszakats changed the title GHA: add msys2 and cygwin jobs GHA: add MSYS2 and Cygwin jobs May 11, 2024
@vszakats vszakats changed the title GHA: add MSYS2 and Cygwin jobs GHA: add MSYS and Cygwin jobs May 11, 2024
@vszakats vszakats marked this pull request as ready for review May 11, 2024 17:25
@vszakats
Copy link
Member Author

vszakats commented May 11, 2024

Runs OK now, has OpenSSL + libpsl (plus a bunch of others it detected automaticall). Tests pass.
Runtimes compared to AppVeyor jobs (no SSL) (tested on a weekend):

                                           AppVeyor GHA
                                           no SSL¹  OpenSSL
                                                    default -j2 #1  -j2 #2 -j3    -j4    -j5    -j6    -j8    -j12   -j14³  -j16
                                           -------- ------- ------  ------ ------ ------ ------ ------ ------ ------ ------ ------
autotools, cygwin, Debug, x86_64           53m25s   26m25s  22m21s  21m57s 20m08s 20m21s 19m40s 19m12s 18m39s 18m08s 32m18s 18m17s
autotools, msys2, Debug, x86_64, no Proxy  38m30s   22m28s  18m46s  18m16s 17m04s 16m10s 16m03s 15m47s 15m21s 15m38s 22m46s 14m59s
autotools, msys2, Debug, x86_64            38m45s   23m48s  19m16s  19m10s 18m06s 16m43s 16m18s 16m01s 16m01s 15m25s 24m06s 15m20s
autotools, msys2, Release, x86_64          35m57s   18m29s  14m25s² 14m19s 13m05s 12m35s 11m33s 11m35s 11m16s 10m59s 18m49s 11m04s
cmake, mingw-w64, gcc 13, Debug, x64       34m39s                                                                    19m31s

¹ https://ci.appveyor.com/project/curlorg/curl/builds/49794352
² TESTFAIL: These test cases failed: 1542 https://github.com/curl/curl/actions/runs/9052581559/job/24870416402?pr=13609#step:5:7441
³ on a workday

edit: Is the 'no proxy' variant adding much value to be worth keeping it? Or perhaps more variation could be introduced to make it valuable?

edit: added parallel test results. (#13609)

@vszakats vszakats force-pushed the gha-windows-msys-cygwin branch 4 times, most recently from 4a1bc58 to b553c13 Compare May 13, 2024 08:55
@vszakats vszakats changed the title GHA: add MSYS and Cygwin jobs GHA: add MSYS, mingw-w64, Cygwin jobs May 13, 2024
@vszakats vszakats force-pushed the gha-windows-msys-cygwin branch 2 times, most recently from 62a789e to cb2025f Compare May 15, 2024 12:59
@vszakats
Copy link
Member Author

Last minute I enabled WebSockets in the mingw-w64 job and 2301 and 2305 started failing right away:
https://github.com/curl/curl/actions/runs/9133449443/job/25116951463#step:14:14502
https://github.com/curl/curl/actions/runs/9133227792/job/25116241601#step:14:18246

It's also the first time WebSocket is tested on native Windows in CI.
With MSYS and Cygwin I haven't seen this happening.

Ignoring these results for now as a workaround.

@vszakats vszakats closed this in 36fd2dd May 17, 2024
@vszakats vszakats deleted the gha-windows-msys-cygwin branch May 17, 2024 22:43
vszakats added a commit to vszakats/curl that referenced this pull request May 18, 2024
vszakats added a commit that referenced this pull request May 18, 2024
@vszakats
Copy link
Member Author

vszakats commented May 19, 2024

vszakats referenced this pull request May 27, 2024
MQTT / OmniOS:
```
TESTFAIL: These test cases failed: 1190 1198 3017
```
Ref: https://github.com/curl/curl/actions/runs/9258522297/job/25468730731?pr=13694#step:3:10251

MQTT / OmniOS:
```
TESTFAIL: These test cases failed: 1194 2200 2203 2205
```
Ref: https://github.com/curl/curl/actions/runs/9150523540/job/25155409832#step:3:10233

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 1096
```
Ref: https://github.com/curl/curl/actions/runs/9150702711/job/25155793948#step:3:10247

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 381
```
Ref: https://github.com/curl/curl/actions/runs/9163863822/job/25193897640#step:3:10230

FTP / OmniOS:
```
TESTFAIL: These test cases failed: 340
```
Ref: https://github.com/curl/curl/actions/runs/9233804752/job/25406671742?pr=13771#step:3:10245

Ref: #13583 (comment)
vszakats added a commit that referenced this pull request May 28, 2024
Shot in the dark trying to find out which tests are
hanging / going to an infinite loop.

The ones failing after 45 minutes (mingw-w64) or 30 minutes (MSVC).

Ref: #13599 (comment)
vszakats added a commit to vszakats/curl that referenced this pull request May 28, 2024
Following up on previous occurrences showing up as gcc warnings, replace
the remaining few `time(&var)` calls with `= time(NULL)`, though these
aren't specifically causing compiler warnings. All of these are in the
TFTP client code (`lib/tftp.c`), except one which is in a debug branch
in `lib/http_aws_sigv4`.

What's unexplainable is that this patch seems to stabilize the TFTP
tests regularly hanging or going into an infinite loop on GHA windows
workflows with MSYS2, mingw-w64 and MSVC (Cygwin is unaffected):
  curl#13599 (comment)

I figure it's something worth trying even if it turns out to be a dead
end.

`time()` docs:
https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/time-time32-time64
https://manpages.debian.org/bookworm/manpages-dev/time.2.en.html

Follow-up to 58ca0a2 curl#13800
Follow-up to d0728c9 curl#13643
Closes #xxxxx
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CI Continuous Integration tests Windows Windows-specific
Development

Successfully merging this pull request may close these issues.

None yet

2 participants